#include<bits/stdc++.h>

using namespace std;

using ll=long long;


const int maxn=5e6+100;
const ll MOD=998244353;

ll A,B,C,D,n,fac[maxn],ifac[maxn]; 

ll qpow(ll a,ll x){
	ll ans=1;
	while(x){
		if(x&1){
			ans=ans*a%MOD;
		}
		a=a*a%MOD;
		x>>=1;
	}
	return ans;
}

ll Func(ll n,ll m){
	if(n<m||n<0||m<0){
		return 0;
	}
	else{
		return fac[n]*ifac[m]%MOD*ifac[n-m]%MOD;
	}
}


void solve(){
	cin>>A>>B>>C>>D;
	n=A+B+C+D;
	
	fac[0]=1;
	for(int i=1;i<=n;i++){
		fac[i]=fac[i-1]*i%MOD;
	}
	ifac[n]=qpow(fac[n],MOD-2);
	for(int i=n-1;i>=0;i--){
		ifac[i]=ifac[i+1]*(i+1)%MOD;
	} 
	ll ans=0;
	for(int i=0;i<=B;i++){
		ans=(ans+Func(i+C+D,C)*Func(A-1+B-i,A-1))%MOD; 
	}
	cout<<ans<<endl;
} 

int main(){
	int t=1;
	while(t--){
		solve();
	}
	return 0;
}
